diff -Naur gcc-4.4-4.4.1.old/src/gcc/ChangeLog gcc-4.4-4.4.1/src/gcc/ChangeLog
--- a/src/gcc/ChangeLog	2009-10-12 21:21:09.000000000 +0300
+++ b/src/gcc/ChangeLog	2010-10-05 16:40:03.400485816 +0300
@@ -1,3 +1,10 @@
+2010-07-28  Chung-Lin Tang  <cltang@codesourcery.com>
+
+	* config/arm/arm.c (arm_pcs_default): Remove static.
+	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_PCS or
+	__ARM_PCS_VFP to indicate soft/hard-float calling convention.
+	(arm_pcs_default): Declare.
+
 2009-07-22  Release Manager
 
 	* GCC 4.4.1 released.
diff -Naur gcc-4.4-4.4.1.old/src/gcc/config/arm/arm.c gcc-4.4-4.4.1/src/gcc/config/arm/arm.c
--- a/src/gcc/config/arm/arm.c	2010-10-05 16:39:02.236225949 +0300
+++ b/src/gcc/config/arm/arm.c	2010-10-05 16:40:03.404475881 +0300
@@ -673,7 +673,7 @@
 /* The maximum number of insns to be used when loading a constant.  */
 static int arm_constant_limit = 3;
 
-static enum arm_pcs arm_pcs_default;
+enum arm_pcs arm_pcs_default;
 
 /* For an explanation of these variables, see final_prescan_insn below.  */
 int arm_ccfsm_state;
diff -Naur gcc-4.4-4.4.1.old/src/gcc/config/arm/arm.h gcc-4.4-4.4.1/src/gcc/config/arm/arm.h
--- a/src/gcc/config/arm/arm.h	2009-10-14 21:55:23.000000000 +0300
+++ b/src/gcc/config/arm/arm.h	2010-10-05 16:40:22.560225768 +0300
@@ -84,7 +84,13 @@
 	if (arm_arch_iwmmxt)				\
 	  builtin_define ("__IWMMXT__");		\
 	if (TARGET_AAPCS_BASED)				\
-	  builtin_define ("__ARM_EABI__");		\
+	  {						\
+	    if (arm_pcs_default == ARM_PCS_AAPCS_VFP)	\
+	      builtin_define ("__ARM_PCS_VFP");		\
+	    else if (arm_pcs_default == ARM_PCS_AAPCS)	\
+	      builtin_define ("__ARM_PCS");		\
+	    builtin_define ("__ARM_EABI__");		\
+	  }						\
 	if (arm_tune_marvell_f)				\
 	  builtin_define ("__ARM_TUNE_MARVELL_F__");	\
 	if (low_irq_latency)				\
@@ -1678,6 +1684,9 @@
   ARM_PCS_UNKNOWN
 };
 
+/* Default procedure calling standard of current compilation unit. */
+extern enum arm_pcs arm_pcs_default;
+
 /* We can't define this inside a generator file because it needs enum
    machine_mode.  */
 /* A C type for declaring a variable that is used as the first argument of
